<!DOCTYPE html>
<script src="../resources/runner.js"></script>
<style>
.a .b { background-color: green }
</style>
<div id="root"></div>
<script>
function appendDivChildren(root, childCount, levels) {
    if (levels <= 0)
        return;
    for (var i = 0; i < childCount; i++) {
        var div = document.createElement("div");
        appendDivChildren(div, childCount, levels - 1)
        root.appendChild(div);
    }
}

var root = document.getElementById("root");
appendDivChildren(root, 5, 5);
root.firstChild.className = "b";
document.body.offsetTop; // force style recalc.

PerfTestRunner.measureRunsPerSecond({
    description: "Measure the style recalc performance when changing a class affecting the style of a single descendant.",
    run: function() {
        root.className = "a";
        root.offsetTop; // force recalc.
        root.className = "";
        root.offsetTop; // force recalc.
    }});
</script>
